/**
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * $Id$ SecurityServiceMock.java
 * Universidad de los Andes (Bogotá - Colombia)
 * Departamento de Ingeniería de Sistemas y Computación
 * Licenciado bajo el esquema Academic Free License version 2.1
 *
 * Ejercicio: Muebles los Alpes
 * Autor: Camilo Alvarez
 * Autor: David Méndez
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 */
package com.losalpes.catalogo.servicios;

import com.losalpes.catalogo.entities.TipoUsuario;
import com.losalpes.catalogo.entities.Usuario;
import com.losalpes.catalogo.excepciones.AuthenticationException;
import javax.ejb.EJB;
import javax.ejb.Stateless;

/**
 * Implementacion de los servicios de seguridad que se le prestan al sistema. [Mock Object]
 * @author Camilo Alvarez
 * @author David Méndez
 */
@Stateless
public class SecurityService implements ISecurityServiceLocal, ISecurityServiceRemote {

    /**
     * Unidad de persistencia de la aplicación
     */
    @EJB
    private IPersistenceServices persistanceServices;

    /**
     * Registra el ingreso de un usuario al sistema.
     * @param usuario. Login del usuario que quiere ingresar al sistema.
     * @param pwd. Contraseña del usuario que quiere ingresar al sistema.
     * @return usuario. Retorna el objeto que contiene la información del usuario que ingreso al sistema.
     */
    public Usuario login(String usuario, String pwd) throws AuthenticationException {
        if (usuario.equals("ADMINISTRADOR")) {
            Usuario usAdmin = new Usuario();
            usAdmin.setUsuario(usuario);
            usAdmin.setPwd(pwd);
            usAdmin.setTipoUsuario(TipoUsuario.ADMINISTRADOR);
            return usAdmin;
        } else {
            Usuario user = (Usuario) persistanceServices.findById(Usuario.class, usuario);
            if (user != null && user.getPwd().equals(pwd)) {
                return user;
            } else {
                throw new AuthenticationException("Usuario inválido");
            }

        }
    }

}